package Leetcode第一期;

import java.util.ArrayList;
import java.util.List;

/**
 * @author : K k
 * @date : 17:06 2020/9/15
 */
public class 和为s的连续正数序列_II_57 {

    //滑动窗口
    public int[][] findContinuousSequence(int target) {
        int i=1,j=1;//定义左右边界
        List<int[]> res=new ArrayList<>();
        int sum=0;

        //左边界不能大于target/2 因为是有序的，所以答案一定要存在于 target/2之前（包括target）
        while (i<=target/2){
            sum=i+j;
            if (sum<target){sum+=j;j++;}
            else if (sum>target){sum-=i;i++;}
            else {
                //等于 找到一组答案
                int[] arr = new int[j-i];
                for (int k = i; k < j; k++) {
                    arr[k-i] = k;
                }
                res.add(arr);
                // 左边界向右移动
                sum -= i;
                i++;
            }
        }
        return res.toArray(new int[res.size()][]);
    }

    public static void main(String[] args) {
        和为s的连续正数序列_II_57 x=new 和为s的连续正数序列_II_57();
        x.findContinuousSequence(9);
    }
}
